package com.xuxueli.applyModules.utils.exporttables;

import com.lowagie.text.Chunk;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;

import java.awt.*;

public class DocStyleUtils {

    /**
     * 功能说明：设置字体的样式，颜色为黑色</BR>
     * 修改日期：2011-04-27
     * @author myclover
     * @param family  字体类型
     * @param size    字体大小，22f为二号，18f为小二号，16f为三号
     * @param style   字体样式
     * @return
     */
    public static Font setFontStyle(String family , float size , int style){
        return setFontStyle(family, Color.BLACK, size, style);
    }

    /**
     * 功能说明：设置字体的样式</BR>
     * 修改日期：2011-04-27
     * @author myclover
     * @param family  字体类型
     * @param color   字体颜色
     * @param size    字体大小，22f为二号，18f为小二号，16f为三号
     * @param style   字体样式
     * @return
     */
    public static Font setFontStyle(String family , Color color , float size , int style){
        Font font = new Font();
        font.setFamily(family);
        font.setColor(color);
        font.setSize(size);
        font.setStyle(style);
        return font;
    }

    /**
     * 功能说明：为文字填充浅灰色背景</BR>
     * 修改日期：2011-04-27
     * @author myclover
     * @param content   需要填充背景颜色的内容
     * @param appendStr 不需要填充背景颜色的内容
     * @return
     */
    private static Phrase setPhraseStyle(String content , String appendStr){
        Chunk chunk = new Chunk(content);
        //填充的背景颜色为浅灰色
        chunk.setBackground(Color.LIGHT_GRAY);
        Phrase phrase = new Phrase(chunk);
        phrase.add(appendStr);
        return phrase;
    }

    /**
     * 功能说明：设置段落的样式，设置前半截内容和后半截内容格式不一样的段落样式</BR>
     * 修改日：2011-04-27
     * @author myclover
     * @param content  前半截内容
     * @param font     字体的样式
     * @param firstLineIndent 首行缩进多少字符，16f约等于一个字符
     * @param appendStr 后半截内容
     * @return
     */
    public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , String appendStr){
        Paragraph par = setParagraphStyle(content, font, 0f, 12f);
        Phrase phrase = new Phrase();
        phrase.add(par);
        phrase.add(appendStr);
        Paragraph paragraph = new Paragraph(phrase);
        paragraph.setFirstLineIndent(firstLineIndent);
        //设置对齐方式为两端对齐
        paragraph.setAlignment(Paragraph.ALIGN_JUSTIFIED_ALL);
        return paragraph;
    }

    /**
     * 功能说明：设置段落的样式，设置前半截内容填充了浅灰色的背景颜色，后半截内容没有背景颜色的段落样式</BR>
     * 修改日期：2011-04-27
     * @author myclover
     * @param content  前半截有背景颜色的内容
     * @param font     字体的样式
     * @param firstLineIndent 首行缩进的字符，16f约等于一个字符
     * @param leading  行间距12f表示单倍行距
     * @param appendStr 后半截内容
     * @return
     */
    public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , float leading , String appendStr){
        Phrase phrase = setPhraseStyle(content , appendStr);
        Paragraph par = new Paragraph(phrase);
        par.setFont(font);
        par.setFirstLineIndent(firstLineIndent);
        par.setLeading(leading);
        //设置对齐方式为两端对齐
        par.setAlignment(Paragraph.ALIGN_JUSTIFIED_ALL);
        return par;
    }

    /**
     * 功能说明：设置段落的样式，一般用于设置标题</BR>
     * 修改日期：2011-04-27
     * @author myclover
     * @param content  段落的内容
     * @param font     字体样式
     * @param leading  行间距
     * @param alignment 对齐方式
     * @return
     */
    public static Paragraph setParagraphStyle(String content , Font font , float leading , int alignment){
        return setParagraphStyle(content, font, 0f, leading, 0f, alignment);
    }

    /**
     * 功能说明：设置段落的样式，对齐方式为两端对齐，缩进样式是文本之后0.2毫米</BR>
     * 修改日期：2011-04-27
     * @author myclover
     * @param content  段落的内容
     * @param font     字体的样式
     * @param firstLineIndent 首行缩进多少字符，16f约等于一个字符
     * @param leading  行间距
     * @return
     */
    public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , float leading){
        return setParagraphStyle(content, font, firstLineIndent, leading, 0.6f, Paragraph.ALIGN_JUSTIFIED_ALL);
    }

    /**
     * 功能说明：设置段落的样式</BR>
     * 修改日期：2011-04-27
     * @author myclover
     * @param content  段落的内容
     * @param font     字体的样式
     * @param firstLineIndent  首行缩进多少字符，16f约等于一个字符
     * @param leading  行间距
     * @param indentationRight 缩进样式中的文本之后多少毫米，0.6f相当于0.2毫米
     * @param alignment 对齐方式
     * @return
     */
    public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , float leading , float indentationRight , int alignment){
        Paragraph par = new Paragraph(content, font);
        par.setFirstLineIndent(firstLineIndent);
        par.setLeading(leading);
        par.setIndentationRight(indentationRight);
        par.setAlignment(alignment);
        return par;
    }

}